home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Arsenal Files 8
/
The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO
/
prg_casm
/
wsc4c10.zip
/
WSC4C_U.DOC
< prev
next >
Wrap
Text File
|
1996-09-09
|
47KB
|
1,429 lines
Windows Standard Communications
Library for C/C++
(WSC4C)
USERS MANUAL
Version 1.0
September 9, 1996
This software is provided as-is.
There are no warranties, expressed or implied.
Copyright (C) 1996
All rights reserved
MarshallSoft Computing, Inc.
Post Office Box 4543
Huntsville AL 35815
Voice : 205-881-4630
FAX : 205|880|0925
BBS : 205-880-9748
email : info@marshallsoft.com
web : www.marshallsoft.com
_______
____|__ | (R)
--+ | +-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
--+--+ | +---------------------
|___|___| MEMBER
WSC4C Users Manual Page 1
C O N T E N T S
Chapter Page
1.0 Introduction................................................3
1.1 User Support............................................4
1.2 ASP Ombudsman...........................................4
1.3 Determining UART Address & IRQ Settings.................5
1.4 Installation............................................6
2.0 [reserved chapter]
3.0 Library Overview............................................7
3.1 Dynamic Link Libraries..................................7
3.2 Using the Library.......................................7
3.3 Compiling Programs......................................7
3.4 Using a Makefile........................................7
3.5 Using an IDE............................................8
3.6 Compiling WSC...........................................8
4.0 Talking to Your Modem.......................................9
4.1 Modem Standards.........................................9
4.2 Flow Control...........................................10
4.3 Modem I/O Functions....................................11
4.4 Modem Initialization...................................13
5.0 Problems...................................................14
6.0 Serial Communications......................................15
6.1 Communications Basics..................................15
6.2 RS232 Signals..........................................15
7.0 Example Programs...........................................17
7.1 SIMPLE.................................................17
7.2 LOGIN..................................................17
7.3 SELFTEST...............................................17
7.4 RS232..................................................17
8.0 Legal Issues...............................................18
8.1 Registration...........................................18
8.2 License................................................19
8.3 Warranty...............................................19
9.0 Summary....................................................20
9.1 Revision History.......................................19
9.2 Function Summary.......................................20
9.3 Further Reading........................................21
10.0 Other MarshallSoft Computing products for C/C++............21
10.1 Personal Communications Library for Windows...........21
10.2 Personal Communications Library for C/C++.............21
10.3 Libraries for Other Languages.........................21
WSC4C Users Manual Page 2
1.0 Introduction
The Windows Standard Communications Library for C/C++ (WSC4C) is an
asynchronous communications (16-bit) dynamic link library (DLL) which uses
the standard Windows serial communications API. Since it uses the Windows
API, programs using the WSC library are fully compatible with other Window
applications which also use the Windows serial communications API.
Using WSC is very straight-forward. For example, to write "HELLO" to the
serial port COM1:
SioReset(COM1,128,128) /* open COM1 */
SioPuts(COM1,"HELLO",5) /* write "HELLO" to COM1 */
SioDone(COM1) /* close COM1 */
Four C/C++ example programs with full source code are included. Refer to
chapter 7 for more details on each of the example programs.
SIMPLE : A simple terminal emulator.
LOGIN : Same as SIMPLE but can also dial a modem and log onto a BBS.
SELFTEST : Performs COM port functionality testing.
RS232 : Same as SIMPLE but controls flow control, modem lines, etc.
WSC4C contains over 25 functions. All functions return a negative number if
an error condition is detected. For more details, consult the WSC4C
Reference Manual
WSC4C uses the same function names and arguments as PCL4W (our Windows
Communications Library that does NOT use the Windows API) except for a few
functions.
Our goal is to provide a robust serial communications library that that you
and your customers can depend upon. Contact us if you have any questions.
WSC4C Users Manual Page 3
1.1 User Support
We want you to be successful in developing your applications using WSC4C! We
depend upon our customers to let us know what they need in a communications
library. This means we are committed to providing the best communications
library that we can. If you have any suggestions or comments, please let us
know.
If you are having a problem using WSC4C, call us at 205-881-4630 between
1:30PM and 9:30PM CST Monday through Friday. You can also call at other
times and leave a message, and call back later for a reply. Registered
users (ONLY) can also FAX us at 205-880-0925 at any time (24 hours).
However, we can only answer questions with respect to using the WSC4C
library. We cannot help you program your application.
You may also call our User Support BBS (2400 to 14400 baud, no parity, 8
data bits, 1 stop bit) at 205-880-9748 and leave a message (address it to
the SYSOP). We will usually have a reply ready for you within 24 hours.
The BBS is available 24 hours per day except at 2 PM Sundays for
maintenanace. All files are in standard ZIP format. The BBS will contain the
latest shareware version of all MarshallSoft products as well as related
files such as:
BUGS.ZIP: Bug report.
NEWS.ZIP: Latest news regarding our products.
If you are on the Internet, you can email us at info@marshallsoft.com. You
can also get the latest versions of our products from our anonymous ftp
site:
FTP: ftp.marshallsoft.com
PATH: marshallsoft
The MarshallSoft Computing, Inc. newsletter "Comm Talk" is published
quarterly. It discusses various communications problems and solutions using
WSC4C as well as related information.
The latest copy of our newsletter can be found on our User Support BBS (in
file area "Newsletters"), our anonymous ftp site (directory /marshallsoft)
as well as our web site.
Web site: www.marshallsoft.com
1.2 ASP Ombudsman
MarshallSoft Computing, Inc. is a member of the Association of Shareware
Professionals (ASP). ASP wants to make sure that the shareware principle
works for you. If you are unable to resolve a shareware-related problem
with an ASP member by contacting the member directly, ASP may be able to
help. The ASP Ombudsman can help you resolve a dispute or problem with an
ASP member, but does not provide technical support for members' products.
Please write to the ASP Ombudsman at 545 Grover Road, Muskegon, MI USA
49442-9427, Fax 616-788-2765, or send a CompuServe message via CompuServe
Mail to ASP Ombudsman 70007,3536.
WSC4C Users Manual Page 4
1.3 Determining UART Address & IRQ Settings
You will not normally need to know the port addresses or IRQ assignments
made by Windows. But this information is maintained by Windows, and is
available if you need it.
Both Windows 3.X and Windows 95 maintain a list of serial port settings. On
Windows 3.X systems, choose the "Ports" icon in the "Control Panel" in the
"Main Group". Select "Settings", and then "Advanced" to view the COM port
UART address and IRQ settings.
In Windows 95, choose "My Computer" icon ("or whatever your computer icon is
named), select the "Control Panel" folder and then the "System" icon. Click
on the "Device Manager" tab. Click "Computer" and then click "Properties".
Click the "View Resources" tab. To view reserved resources, click the
resource type at the top of the dialog box (i.e., "Interrupt request (IRQ)"
or "Input/output (I/O)" ).
The four standard COM ports which Windows typically controls are:
Port Address IRQ
COM1 &H3F8 4
COM2 &H2F8 3
COM3 &H3E8 4
COM4 &H2E8 3
WSC4C Users Manual Page 5
1.4 Installation
This shareware product may be evaluated for 500 executions (calls to
SioReset). WSC4C must be installed using the TRIALS manager before it can be
executed. To install WSC4C:
(1) Before installation of WSC4C, your Windows C/C++ compiler should already
be installed on your system and tested. Examine the file "FILES.LST" for a
list of the distribution files.
(2) Make a backup copy of your distribution disk. Put your original
distribution disk in a safe place.
(3) Exit Windows into DOS, or start a DOS window:
(4) Create a work directory. For example, to create C:\WSC4C, type:
C:
CD \
MKDIR WSC4C
CD WSC4C
(5) Unzip all distribution files to your working directory.
PKUNZIP WSC4C10.ZIP
If this is a "Commercial" registered version, skip to step 10. The
shareware archive must include:
WSC10.TMD -- The WSC installation data file. Required for both
shareware installation and "personal" registration.
TRIALS.EXE -- The TRIALS executable used to install WSC4C.
(6) TRIALS will open WSC10.TMD in order to install WSC. Type:
TRIALS -i WSC10
(7) Once installed, WSC4C cannot be reinstalled unless you reformat your
hard drive. TRIALS does not modify disk formatting or employ other marginal
procedures. TRIALS creates a configuration file which it uses to keep track
of the number of executions. Do not modify or move this file or you will
not be able to execute WSC4C programs.
WSC4C must be installed on each computer on which WSC4C programs will run.
(9) The installation can be tested by typing:
TRIALS -L
(10) Copy WSC.DLL, WTMLIB.DLL [Shareware version only], and MODEM_IO.DLL
from your work directory to the C/C++ compiler directory. Start C/C++ and
compile SIMPLE.MAK.
(11) The recommended way to test SIMPLE is to run it on two computers
connected by a null modem cable. Whatever is typed on one computer should
be displayed on the other. If you don't have two computers, you can use
SIMPLE to talk to your modem. Sending an "AT" to the modem should result in
an "OK" being sent back. See Section 7.1 "SIMPLE" for more information.
(12) Compile and link LOGIN. Use LOGIN to call a local BBS. See Section 7.2
"LOGIN" for more information.
(13) Compile and link SELFTEST. Use SELFTEST to test one of your serial
ports. See Section 7.3 "SELFTEST" for more information.
WSC4C Users Manual Page 6
3.0 Library Overview
3.1 Dynamic Link Libraries
WSC4C is provided as a dynamic link library (DLL). A DLL is characterized by
the fact that it need not be loaded until required by an application program
and that only one copy of the DLL is necessary regardless of the number of
application programs that use it. Contrast this to the traditional static
library which is bound to each and every application that uses it at link
time.
Since WSC4C is a DLL, only one copy of the WSC4C code & data is loaded into
memory regardless of the number of applications programs that use it.
For example, more than one instance of the test program SIMPLE can be
started. All copies of SIMPLE can run concurrently as long as each uses a
different COM port.
3.2 Using the Library
The WSC4C has been tested on a Gateway 2000 25 MHZ 80386-DX, a Gateway 2000
66MHZ 80486-DX2 (all running Windows 3.1), and a Mid-West Micro 150MHZ
Pentium running Windows 95.
WSC4C has also been tested with Microsoft C/C++ 7.0 (from the Windows SDK),
Microsoft Visual C/C++, Borland C/C++, and Watcom C/C++.
Please examine the WSC4C.H file. Note that COM1 is defined as port zero, not
port one. The user must assume the responsibilty for passing the correct
information when calling WSC4C functions.
We recommend that you experiment with the four example programs.
3.3 Compiling Programs
The example programs can be compiled by either using the provided MAKEFILES
or creating a project file for the IDE. The next two sections provide more
detail for each of these alternatives.
3.4 Using a MAKEFILE
Makefiles originated on UNIX systems. They are the standard way that C/C++
programs are constructed in command line environments. Windows programs can
be constructed with makefiles running DOS using command line Windows
compilers, such as provided by Watcom, Borland and Microsoft.
Makefiles are provided for Microsoft, Borland, amd WATCOM command line
compilers. Makefiles have file extensions of "_M_" for Microsoft, "_B_" for
Borland, and "_W_" for WATCOM. Thus, SIMPLE._W_ is the makefile for SIMPLE
when using the WATCOM compiler.
WSC4C Users Manual Page 7
3.5 Using an IDE
All windows compilers have an Integrated Development Environment (IDE) for
building application programs in the Windows environment. Since there is no
standard format for IDE project files, file names must be entered into the
IDE from the keyboard. Each example program has a project text file (eg:
SIMPLE.PRJ) which contains the list of filenames that must be entered into
the IDE.
The example programs have been build using Microsoft, Borland, and Watcom
IDEs. Refer to IDE_INFO.DOC for more information on using specfic IDEs.
3.6 Compiling WSC
Registered users (commercial version only) can compile WSC in order to
create WSC.DLL. Makefiles are provided for each compiler.
For Microsoft C, type:
NMAKE WSC4C._M_
For Borland C, type:
MAKER -fWSC4C._B_
For Watcom C, type:
WMAKE -f WSC4C._W_
WSC4C Users Manual Page 8
4.0 Talking to Your Modem
A modem is used to extend the distance over which you may communicate.
Without a modem, your RS232 cable is limited to a maximum of approximately
50 feet. But with a modem, you can communicate literally around the world.
4.1 Modem Standards
Two modems can communicate over a telephone line only if they are both using
the same signaling frequencies and modulation, which are determined by the
the modem standards used. Modem standards can be divided into three sets:
(1) speed, (2) data compression used, and (3) error control.
The Bell standards (103 & 212A) are those of AT&T. The CCITT (The
International Consultative Committee for Telephone and Telegraph) standards
are designated as "V. ".
Speed
Bell 103 : 300 baud
Bell 212A : 1200 baud
V.21 : 300 baud
V.22bis : 1200 & 2400 baud
V.32 : 4800 & 9600 baud
V.32bis : 4800, 7200, 9600, 12000, and 14400 baud
V.34 : to 28800 baud.
Data Compression
MNP 5 : Microcom Networking Protocol (proprietary).
V.42bis : International data compression standard.
Error Control
MNP 2,3,4 : Three level error correction (public domain).
V.42 : International error correction standard.
WSC4C Users Manual Page 9
4.2 Flow Control
With modems using data compression, the modem to modem connection will run
at various speeds depending on the quality of the line. The computer to
modem connection will be at a fixed baud rate. Therefore, a protocol (flow
control) is necessary to synchronize the data flow between a modem and the
computer to which it is connected. Refer to your modem manual for
information on flow control protocols supported.
Two flow control protocols are used by most all modems which require flow
control. Software flow control is called "XON/XOFF" (other software flow
control character pairs are defined but operate the same as XON/XOFF) and
hardware flow control is called "RTS/CTS". Most modems which require flow
control enable hardware flow control by default.
In XON/XOFF (software) flow control, the computer suspends transmitting data
if it receives a XOFF character (13 hex) from the modem, and continues
transmitting when it receives a XON character (11 hex). Similiarly, the
computer can signal the modem not to send any more data by transmitting a
XOFF to it, and can tell the modem to continue transmission be sending a
XON.
In RTS/CTS (hardware) flow control, the RTS line is used by the computer to
signal the modem , while the CTS line is used by the modem to signal the
computer. The RTS line is set OFF by the computer to tell the modem to
suspend transmission, and set to ON to tell the modem to continue
transmission. The CTS line is set to OFF by the modem to tell the computer
to stop transmitting, and set to ON to tell the computer to continue
transmitting.
Given the choice, always choose hardware flow control over software flow
control so that all data transmission is transparent. If hardware flow
control is not the default (which it almost always is), you should modify
your modem initialization string to turn hardware flow control on.
WSC4C supports both hardware and software flow control. Refer to the
SioFlow function in the WSC4C Reference Manual.
WSC4C Users Manual Page 10
4.3 MODEM I/O (MIO)
4.3.1 MIO Introduction
The file MODEM_IO.C contains declarations for using the Modem I/O DLL. These
functions ease communicating with modems using AT commands. The LOGIN
example program code has examples of using the MIO functions.
The Windows "operating system" is what is called "cooperative multitasking".
This means that the executing Windows task must voluntarily "give up"
control before another Windows task (or Windows itself) can execute.
The difficulty is how to wait for a number of seconds while still
relinquishing control periodically before the wait is up. One solution is by
making functions that need to wait (such as the MIO functions) into "state"
machines. A function is broken down into parts called states, and control is
returned to Windows between executing each state.
For example, to send the string "ATDT1,205,880,9748" to the modem with one
tenth second delay between transmitted characters, the following sequence is
used:
(1) Send the string to the MIO driver by executing:
Code = mioSendTo(Port,100,"!ATDT1,205,880,9748")
The '!' characters are converted to carriage returns. The text string is
copied into the driver's data area.
(2) Call mioDriver (typically based on a timer) until MIO_IDLE is returned.
Each time mioDriver is called, it will send another character to the modem
provided the required delay (since the previous character was sent) has
passed. If the delay has not passed, the driver simply returns MIO_RUNNING,
but without actually sending a character to the modem. Once all characters
have been sent, mioDriver will return MIO_IDLE, indicating it is done and is
ready to accept another function.
mioDriver will return MIO_RUNNING if it is still processing. Anything else
received indicates that it is still processing and the returned value is a
character from the modem that can be displayed if wanted.
(3) Once mioDriver returns MIO_IDLE, call mioResult to get the result of the
mioSendTo call.
The above is rather straight forward in practice. See the LOGIN application
for an example of its use.
4.3.2 MIO Functions
4.3.2.1 mioDriver
Syntax: int mioDriver(int Port)
mioDriver executes the next state of any previously started MIO function
such as mioSendTo, mioWaitFor, and mioQuiet. It returns:
MIO_IDLE : if the driver is ready for the next mioSendTo, mioWaitFor, or
mioQuiet.
MIO_RUNNING : if the driver is not idle.
<otherwise> : if the driver is not idle, and the returned character was
received from the modem.
WSC4C Users Manual Page 11
4.3.2.2 mioBreak
Forces the MIO driver to the IDLE state, abandoning any work in progress.
4.3.2.3 mioSendTo
Syntax: int mioSendTo(int Port, long Pace, char *String)
The mioSendTo function sends the characters in the string 'Text' to serial
output. There is a delay of 'Pace' milliseconds between characters.
4.3.2.4 mioWaitFor
Syntax: int mioWaitFor(int Port, long Wait, int Case, char *String)
The mioWaitFor function waits for characters from serial input that match
the string 'Text'. A total of 'Wait' milliseconds are allowed before timing
out and returning FALSE (0). If the 'Case' flag is TRUE, then the string
comparison is NOT case sensitive.
For example, to wait up to one minute for "CONNECT", "NO CARRIER", or "BUSY"
from the modem after dialing a number (on COM1):
Code = mioWaitFor(COM1,60000,1,"CONNECT|NO CARRIER|BUSY")
The function mioDriver() must be called until MIO_IDLE is returned. Then
mioResult() is called to get the result of the mioWaitFor. A value of 0
indicates that neither "CONNECT", "BUSY", nor "NO CARRIER" was received. A
non-zero value indicates that one of the three sub-strings was received. A
ASC("0") is returned if "CONNECT" was seen, ASC("1") is returned if "NO
CARRIER" was seen, and ASC("2") is returned if "BUSY" was seen.
4.3.2.5 mioQuiet
Syntax: int mioQuiet(int Port,long Wait)
The mioQuiet function waits for continuous quiet [no incoming serial data]
of 'Wait' milliseconds before returning. Any incoming character while
mioQuiet is running is flushed.
4.3.3 MIO Summary
mioDriver : Allows the execution of mioSendTo, mioWaitFor, or mioQuiet once
they have been started. Returns MIO_IDLE (defined in
MODEM_IO.C) if ready not running, MIO_RUNNING if running, and
anything else is a character from the modem that can be
displayed if wanted.
mioBreak : Forces the MIO driver to IDLE state.
mioSendTo : Sends a string (including control chars) to the modem.
mioWaitFor : Waits for a particular string from the modem, passing all else
through.
mioQuiet : Waits for continuous quiet of a specified duration.
mioBreak : Breaks further modem I/O activity.
WSC4C Users Manual Page 12
4.4 Modem Initialization
If your application uses a modem (as opposed to using a null modem cable),
then you should always send an initialization string to your modem if it is
a programmable modem such as those made by Hayes. Communication programs
such as PROCOMM and TELIX always send such a string automatically as soon as
they start up.
The particular initialization string depends on the make of your modem. For
Hayes and Hayes AT command set compatible modems, the following string
(followed by a carriage return) should work:
AT E1 S7=60 S11=60 V1 X1 Q0 S0=0
Refer to your Modem User's Guide for a full discussion of these commands. A
brief description is as follows:
AT Modem attention command.
E1 Modem will echo what you send to it.
S7=60 Wait 60 seconds for carrier and/or dial tone.
S11=60 Use 60 milliseconds for tone dialing duration & spacing.
V1 Display result code as words (not numbers).
X1 Use the extended result message (CONNECT XXXX) set.
Q0 Modem returns result codes.
S0=0 Do not answer RING.
If your application will answer incoming calls, then set the S0 register to
the ring on which to automatically answer.
If you send the above codes by using SioPutc (as opposed to typing them from
the keyboard), then follow these guidelines:
(1) Send an initial carriage return before the initialization string.
(2) Pause at least 150 milliseconds after each character sent as your modem
needs the time to perform its own internal processing. Pause a little longer
if your modem is not accepting your initialization string.
(3) Pause one and a half seconds after sending any initialization command
such as ATZ or AT&F since your modem must do quite a bit of processing.
If you experience any problems in initializing your Hayes modem, you should
first reset it to factory settings by sending:
AT&F
Refer to the LOGIN program (function SendToModem is in the file MODEM_IO.C)
for an example of sending an initialization string to a Hayes compatible
modem.
WSC4C Users Manual Page 13
5.0 Problems
If you cannot get your application to run properly, first compile and run
the terminal emulator program SIMPLE provided on your distribution disk.
Test SIMPLE by connecting two computers with a null modem cable or by
commanding a Hayes AT command set compatible modem.
Once SIMPLE runs, compile and run the SELFTEST program. This program will
test your serial ports' functionality.
If your application does not run but SIMPLE and SELFTEST run correctly, then
you have most likely made a programming mistake in your application.
MarshallSoft Computing cannot debug your application, especially over the
telephone! However, consider each of the following when searching for an
error in your application.
1. Have you included the file WSC4C.H in your application ?
2. Is your receive buffer large enough ? Use a receive buffer size that is
twice the size of the largest expected incoming block.
3. Have you selected too high a baud rate? Windows can multitask many tasks
at once. You may have to lower your baud rate (or get 16550 UARTS).
4. Did SioReset return a zero value ? If not, then you must call SioReset
again. See SIMPLE.C for an example.
5. Did you send the proper initialization string to your modem ? Did you
set DTR and RTS ? (you should).
7. Do you have more than one COM1 port? For example, if you have a COM1
port on your motherboard, you cannot add another COM1 port or modem board
that uses COM1 without first disabling the COM1 on the motherboard.
We recommend the following steps if you believe that you have discovered a
bug in the library: (1) Create the smallest, simpliest test program possible
that demonstrates the problem. (2) Document your exact machine
configuration and what error the test program demonstrates. (3) Upload the
example source to our user support BBS, email it or mail us a disk.
If the problem can be solved with an easy work-around, we will publish the
work-around. If the problem requires a modification to the library, we will
make the change and make the modified library available to our customers
without charge.
WSC4C Users Manual Page 14
6.0 Serial Communications
6.1 Communications Basics
The heart of serial communications is the UART (Universal Asynchronous
Receiver Transmitter). The IBM PC/XT/AT and compatibles use the 8250,
16450, or the 16550 UART. The purpose of the UART is:
(1) To convert bytes from the CPU (Central Processing Unit), into a serial
format by adding the necessary start, stop, and parity bits to each byte
before transmission, and to then transmit each bit at the correct baud rate.
(2) To convert the incoming stream (at a specified baud rate) of serial bits
into bytes by removing the start, stop, and parity bits before being made
available to the CPU.
The UART is part of the serial interface circuitry which allows the CPU to
send and receive signals over the RS232 lines. This can be diagrammed as
follows:
Serial Interface
+-------------------+
| |
+-----+ Data Bus | +------+ | RS232 Signals
| CPU +------------+ | UART | +----------------*
+-----+ | +------+ |
| |
+-------------------+
The 8250/16450/16550 UART is capable of operating in one of two modes,
"polled" and "interrupt driven". The serial communications functions in the
BIOS use the polled method. In this approach, the CPU is typically in a
loop asking the UART over and over again if it has a byte ready. If its
does, the polling code returns the byte. But, if the next byte comes in
before the polling code is executing again, then that byte is lost.
In the interrupt driven approach (used by Windows/WSC4C), when a byte is
received by the UART, an "Interrupt Service Routine" (ISR) is executed
immediately, suspending temporarily whatever else is executing. The ISR then
moves the byte to a buffer so that your application program can later read
it.
Transmitted bytes are queued up awaiting transmission. When a byte is
moved from the UART transmitter holding register to the UART transmitter
shift register, an interrupt is generated and the next byte is taken from
the library transmitter buffer by the ISR and written to the UART holding
register.
Up to 16 bytes can be taken from the transmitter buffer while processing one
transmitter interrupt if an 16550 UART is used. The 16550 UART is strongly
recommended for computers doing serial communications under Windows.
Additional information on serial port hardware can be found in the User's
manual for our companion product PCL4W.
WSC4C Users Manual Page 15
6.2 RS-232 Signals
RS-232 is the name of the serial data interface standard used to connect
computers to modems. Most IBM compatible computers are built with at least
one serial port and use either DB9 (9 pin) or DB25 (25 pin) connectors.
A summary of these pins and their function follows. For more detailed
information, refer to one of the many books dealing with RS-232 interfacing.
Signal Ground Pin 7 (DB25), Pin 5 (DB9)
The SG line is used as the common signal ground, and must always be
connected.
Transmit Data Pin 2 (DB25), Pin 3 (DB9)
The TX line is used to carry data from the computer to the modem.
Receive Data Pin 3 (DB25), Pin 2 (DB9)
The RX line is used to carry data from the modem to the computer.
Data Terminal Ready Pin 20 (DB25), Pin 4 (DB9)
The DTR line is used by the computer to signal the modem that it is ready.
DTR should be set high when talking to a modem.
Data Set Ready Pin 6 (DB25), Pin 6 (DB9)
The DSR line is used by the modem to signal the computer that it is ready.
Request to Send Pin 4 (DB25), Pin 7 (DB9)
The RTS line is used to "turn the line around" in half duplex modems, and
for hardware flow control in most modems that require flow control. RTS is
controlled by the computer and read by the serial device (modem).
Clear to Send Pin 5 (DB25), Pin 8 (DB9)
The CTS line is used to "turn the line around" in half duplex modems, and
for hardware flow control in most modems that require flow control. CTS is
controlled by the serial device (modem) and read by the computer.
Data Carrier Detect Pin 8 (DB25), Pin 1 (DB9)
The DCD line is used by the modem to signal the computer that a data carrier
signal is present.
Ring Indicator Pin 22 (DB25), Pin 9 (DB9)
The RI line is asserted when a 'ring' occurs.
WSC4C Users Manual Page 16
7.0 Example Programs
7.1 SIMPLE
SIMPLE is a very simple communications programming using WSC4C.
Everything that is typed on the keyboard is sent to the serial port, and
everthing incoming from the serial port is displayed on the screen.
The easiest way to test SIMPLE is to connect to a modem. Typing "AT" should
result in an "OK" being displayed.
A null-modem cable can also be used to connect two computers together with
their serial ports. Run SIMPLE on both machines. Whatever is typed on one
machine will be displayed on the other.
7.2 LOGIN
LOGIN is the same program as SIMPLE but with the addition of "Modem" on the
menu bar. Under "Modem", select "Start", then "Handshake" in order to send
an "AT" to the connected modem, or "Dial" to send a dial string to the modem
(which dials our user support BBS). Once the dial sequence is sent, the
program will wait for up to 60 seconds for the "CONNECT" string from the
modem. This wait can be terminated at any time by choosing "BREAK" under
"Modem".
To test LOGIN, you need a AT command set compatible modem and a BBS to call
up. LOGIN will dial our BBS at 205-880-9748, or edit the dial string in
LINE.C to call up a local BBS.
7.3 SELFTEST
SELFTEST performs a serial port I/O functionality test. Either a pair of
ports on the same computer (using a null modem cable) or a single port
(using a loopback adapter) can be tested.
Refer to LOOPBACK.DOC for an explanation of how to make a loopback adapter
(without tools!).
7.4 RS232
RS232 is similiar to SELFTEST, but with enhanced capability. It can set flow
control (hardware, software, or none), DTR line (set or clear), RTS line
(set or clear), display the transmit & receive queue sizes, detect a break
signal, detect changes in DSR and CTS, as well as check for various line
errors (parity error, framing error, data overrun, receive queue overflow,
transmit buffer full).
WSC4C Users Manual Page 17
8.0 Legal Issues
8.1 Registration
Two types of registration are provided, (1) Personal and (2) Commercial.
(1) Personal Registration is for personal (non-commercial) use of WSC4C.
The registration fee is $39.95. To register, type (from the DOS prompt in
the work directory containing WSC10.TMD) :
TRIALS -k WSC10
The TRIALS program will prompt you for your name, then display three control
codes. You then contact us by phone, mail, email or BBS. We will need to
know the exact (case sensitive) name typed into TRIALS as well as the exact
control codes displayed.
After receiving payment, you will be issued an authorization code which you
enter into the TRIALS program, which will generate C:\WSC10.KEY.
You can re-run TRIALS to generate the key file once you have the
authorization code. However, you must run TRIALS on the same machine the
second time in order to get the same control codes.
Once WSC10.KEY is created, it can be copied to any machine on which you will
use WSC.
Personal registration does not include printed manuals or disks. Printed
manuals (they are on the distribution archive) can be ordered for $10 per
set plus $5 S&H (or $10 S&H outside of North America).
(2) Commercial Registration costs $74.95 and includes complete source code,
printed manuals, no shareware screen of any kind displayed, and no key file
required. A registered archive will be mailed along with printed manuals.
To order, contact us as shown on the title page of this manual.
Multiple copy discounts (3 or more) and site licenses are available. Please
call for details.
We accept American Express, VISA, MasterCard, checks in US dollars drawn on
a US bank, International Postal Money Orders, purchase orders (POs) from
recognized US schools and companies listed in Dun & Bradstreet, and COD
(street address and phone number required) within the USA (plus a $4.50 COD
charge).
For credit card orders, be sure to include the account number, the
expiration date, the exact name on the card, and the complete card billing
address (the address to which the credit card bill is mailed).
WSC4C Users Manual Page 18
8.1 Registration (continued)
Print the file WSC4C.INV if an invoice is needed.
If you wish to update from an older version of WSC4C, send $25 plus $5 S&H
($10 S&H outside of North America).
The commercial registered package includes:
o WSC4C Library w/o shareware screens.
o C/C++ source code for WSC and MODEM_IO.
o Laser printed Users Manual & Reference Manual.
o Telephone, BBS, and email support for one year.
The registered user will receive the latest version of WSC4C shipped by US
second day priority mail (packet airmail overseas). A 3.5" diskette is
provided unless a 5.25" diskette is requested.
All prices are guaranteed for one year from the release date as printed on
the title page.
8.2 License
MarshallSoft Computing, Inc. grants the registered user of WSC4C the right
to use one copy of the WSC4C library (in object form) on a single computer
in the development of any software product (other than libraries such as
WSC4C). The user may not use the library on more than one computer at the
same time. The source code for the library (WSC.C) is copyrighted by
MarshallSoft Computing and may not be released in whole or in part. Products
developed using WSC4C may be distributed without any royalty.
8.3 Warranty
MARSHALLSOFT COMPUTING, INC. DISCLAIMS ALL WARRANTIES RELATING TO THIS
SOFTWARE, WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
AND ALL SUCH WARRANTIES ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. NEITHER
MARSHALLSOFT COMPUTING, INC. NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN THE
CREATION, PRODUCTION, OR DELIVERY OF THIS SOFTWARE SHALL BE LIABLE FOR ANY
INDIRECT, CONSEQUENTIAL, OR INCIDENTAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE SUCH SOFTWARE EVEN IF MARSHALLSOFT COMPUTING, INC. HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR CLAIMS. IN NO EVENT SHALL
MARSHALLSOFT COMPUTING, INC.'S LIABILITY FOR ANY SUCH DAMAGES EVER EXCEED
THE PRICE PAID FOR THE LICENSE TO USE THE SOFTWARE, REGARDLESS OF THE FORM
OF THE CLAIM. THE PERSON USING THE SOFTWARE BEARS ALL RISK AS TO THE QUALITY
AND PERFORMANCE OF THE SOFTWARE.
Some states do not allow the exclusion of the limit of liability for
consequential or incidental damages, so the above limitation may not apply
to you.
This agreement shall be governed by the laws of the State of Alabama and
shall inure to the benefit of Marshallsoft Computing, Inc. and any
successors, administrators, heirs and assigns. Any action or proceeding
brought by either party against the other arising out of or related to this
agreement shall be brought only in a STATE or FEDERAL COURT of competent
jurisdiction located in Madison County, Alabama. The parties hereby consent
to in personam jurisdiction of said courts.
WSC4C Users Manual Page 19
9.0 Summary
9.1 Revision History
Version 1.0: 9 September, 1996. - The initial release of WSC4C.
9.2 Function Summary
Refer to the WSC4C Reference Manual (WSC4C_R.DOC) for detailed information
on the communications and support functions. A one line summary of each
function follows:
+--------------+-----------------------------------------------------------+
| SioBaud | Sets the baud rate of the selected port. |
| SioBrkSig | Asserts, cancels, or detects BREAK signal. |
| SioCTS | Reads the Clear to Send (CTS) modem status bit. |
| SioDCD | Reads the Data Carrier Detect (DCD) modem status bit. |
| SioDone | Terminates further serial processing. |
| SioDSR | Reads the Data Set Ready (DSR) modem status bit. |
| SioDTR | Set, clear, or read the Data Terminal Ready (DTR) bit. |
| SioFlow | Enables / disables hardware flow control. |
| SioGetc | Reads the next character from the serial line. |
| SioGets | Receives a string of characters. |
| SioInfo | Returns information such as library version. |
| SioParms | Sets parity, stop bits, and word length. |
| SioPutc | Transmit a character over a serial line. |
| SioPuts | TRansmits a string of characters. |
| SioReset | Initialize a serial port for processing. |
| SioRI | Reads the Ring Indicator (RI) modem status bit. |
| SioRTS | Sets, clears, or reads the Request to Send (RTS) line. |
| SioRxClear | Clears the receive buffer. |
| SioRxQue | Returns the number of characters in the receive queue. |
| SioStatus | Returns the serial port line status. |
| SioTxClear | Clears the transmit buffer. |
| SioTxQue | Returns the number of characters in the transmit queue. |
| SioUnGetc | "Un-gets" (puts back) a specified character. |
+--------------+-----+-----------------------------------------------------+
WSC4C Users Manual Page 20
9.3 Further Reading
The best way to learn about serial communications is to read a good book on
the subject. Several good texts are available. Two that I like are:
(1) C Programmers's Guide to Serial Communications by Joe Campbell (SAMS)
(2) Mastering Serial Communications by Peter Gofton (SYBEX).
You may also want to get a copy of one of our communications products which
talks to the hardware directly. They include more hardware specific
documentation.
10.0 Other MarshallSoft Computing Products
The following shareware libraries are also available from MarshallSoft
Computing.
10.1 The Personal Communications Library for Windows (C/C++)
The Personal Communications Library for Windows (PCL4W) is a Windows based
asynchronous communications library designed for experienced software
developers programming in C/C++. Unlike WSC4C, PCL4W interfaces to the
serial port hardware directly. PCL4W also supports multiport boards such as
those made by DigiBoard and BOCA.
The Personal Communications Library for Windows (PCL4W) is available
for $75 plus $5 S&H ($10 S&H overseas).
10.2 The Personal Communications Library for C/C++ / DOS
PCL4C is similiar to PCL4W except that it is designed for DOS. Includes
support for protected mode.
10.3 Libraries for Other Languages
We have communications libraries for C/C++, Turbo Pascal, Visual Basic , and
PowerBASIC.
PCL4C : C/C++, DOS [include ptotected mode].
PCL4P : Turbo Pascal, DOS [includes protected mode].
PCL4VB : Visual Basic, DOS.
PCL4PB : Power Basic, DOS.
PCL4W : C/C++, Windows 3.1 & Win 95, talks to hardware directly.
PCLVBW : Visual Basic, Win 3.1 & Win 95, talks to hardware directly.
WSC4C : C/C++, Win 3.1 & Win 95, uses Windows API.
WSC4VB : Visual Basic, Win 3.1 & Win 95, uses Windows API.
WSC4D : Borland DELPHI [Sept 96], Win 3.1 & Win 95, uses Windows API.
WSC4C Users Manual Page 21